import java.util.*;
/**
 * 
 * 缺失的第一个正整数
 * 
 * 描述

给定一个无重复元素的整数数组nums，请你找出其中没有出现的最小的正整数

进阶： 空间复杂度 
O
(
1
)
O(1)，时间复杂度 
O
(
n
)
O(n)

数据范围:
−
2
31
≤
n
u
m
s
[
i
]
≤
2
31
−
1
−2 
31
 ≤nums[i]≤2 
31
 −1
0
≤
l
e
n
(
n
u
m
s
)
≤
5
∗
1
0
5
0≤len(nums)≤5∗10 
5
 

 * 
 */
public class 缺失的第一个正整数 {
    
    public static void main(String[] args) {
        
        int[] nums = new int[]{-1,2,3,4};

        System.out.println(minNumberDisappeared(nums));
    }

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public static int minNumberDisappeared (int[] nums) {
        // write code here

        //排序
        int[] result = Arrays.stream(nums).sorted().filter(a -> a>0).toArray();

        if(result[0] > 1){

            return 1;
        }

        int resultNum = 0;

        for(int i=0; i<result.length; i++){

            if(result[i]>0){

                if(i < result.length -1){

                    if(result[i+1] - result[i] > 1){

                        resultNum = result[i]+1;
                        break;
                    }

                } else{

                    resultNum = result[result.length -1] + 1;

                    break;
                }

            }
        }
        return resultNum;
    }
}
